const axios = require('axios');
const api = require('../config');
const commonUrl = `${api.baseURL}${api.fixedHash}`;
import q from 'querystring';
/**
 * api请求
 * @param {string} url     请求地址
 * @param {string} method  请求方法
 * @param {string} baseURL 默认域名地址
 * @param {object} params  请求参数（GET）
 * @param {object} data    请求参数（非GET）
 */
export default async ({ url, method, baseURL, params, data }, ctx) => {
  const conf = {
    url,
    method,
    baseURL: baseURL || commonUrl,
  };
  const _conf = {
    headers: {
      Origin: api.baseURL,
    },
  };
  if (ctx.cookies.get('x-mars-token')) {
    _conf.headers['x-mars-token'] = ctx.cookies.get('x-mars-token');
  }

  if (method.toUpperCase() === 'GET' || params) {
    _conf.params = params;
  } else {
    _conf.headers['Content-Type'] = 'application/x-www-form-urlencoded';
    //对data数据进行封装拼接成字符串传给java 否则用json传输过去后端无法接受参数
    _conf.data = q.stringify(data);
  }
  const req = Object.assign(conf, _conf);
  //   req.validateStatus = status => (status < 500);
  const res = await axios(conf);
  return res;
};
